import numpy as np

# 【例一】最一般的方法是通过 array 来构造：
value = np.array([1, 2, 3])
print(value)

# 【例二】下面讨论一些特殊数组的生成方式：
# 等差序列： np.linspace, np.arange
value = np.linspace(1, 5, 11)  # 起始、终止（包含）、样本个数
print(value)

value = np.arange(1, 5, 2)  # 起始、终止（不包含）、步长
print(value)

# 【例三】 特殊矩阵： zeros, eye, full
value = np.zeros((2, 3))  # 传入元组表示各维度大小
print(value)

value = np.eye(3)  # 3*3的单位矩阵
print(value)

value = np.eye(3, k=1)  # 偏移主对角线1个单位的伪单位矩阵
print(value)

value = np.full((2, 3), 10)  # 元组传入大小，10表示填充数值
print(value)

value = np.full((2, 3), [1, 2, 3])  # 每行填入相同的列表
print(value)

# 【例四】随机矩阵np.random
# 最常用的随机生成函数为 rand, randn, randint, choice ，它们分别表示0-1均匀分布的随机数组、标准正态的随机数组、随机整数组和随机列表抽样：
value = np.random.rand(3)  # 生成三个0-1分布的随机数组
print(value)

value = np.random.rand(3, 3)  # 生成一个三行三列0-1分布的随机矩阵
print(value)


# 从a到b均匀分布的n个随机数组
def func(a, b, n):
    return (b - a) * np.random.rand(n) + a


value = func(3, 7, 3)
print(value)

value = np.random.uniform(5, 15, 3)
print(value)

# randn 生成了 N(0,I)的标准正态分布：
value = np.random.randn(3)
print(value)

value = np.random.randn(2, 2)
print(value)

# randint 可以指定生成随机整数的最小值最大值（不包含）和维度大小：
